The present disclosure relates to data communication networks. More specifically, the present disclosure relates to auto-discovery between proxy devices in an Internet Protocol version 6 (IPv6) network. A proxy device (also referred to as a “proxy” for short) is a device that functions as a performance-enhancing intermediary between a source node and a destination node. Without loss of generality, we will assume that the source node is a client computer, and the destination node is a server computer. Each proxy may forward, modify, or otherwise transform client-server communications. Examples of proxies include, but are not limited to, (1) web proxies that enhance performance through caching or enhance security by controlling access to servers, (2) mail relays that forward mail from a client to another mail server, (3) DNS relays that cache DNS name resolutions, (4) wide-area network (WAN) accelerators that compress network traffic over a WAN that connects two sites (e.g., a data center and a regional office), and so forth.
One problem that must be overcome when deploying proxies is that of directing client requests to the proxy instead of to the destination server. However, this requires explicit configuration of clients. One way around this problem is to deploy a transparent proxy. The presence of the transparent proxy is not made explicitly known to the client or servers, so all client requests proceed along the network path towards the server as they would have if there were no transparent proxy. This might be done by placing the transparent proxy host in the network path between the client and the server.
Some benefits of a transparent proxy require that a proxy pair exist in the network path. For example, if a proxy is used to transform data in some way, a second proxy preferably untransforms the data. For example, where traffic between a client and a server is to be compressed or encrypted for transport over a portion of the network path between the client and the server, a proxy on one side of that portion would compress or encrypt data before it flows over that portion and a proxy on the other side of that portion would uncompress or decrypt the data and send it along the network path, thereby providing for transparent transformation of data flowing between the client and the server.
For actions that require a proxy pair, preferably both proxies in the proxy pair do not perform a transformation unless they can be assured of the existence and operation of the other proxy in the proxy pair. Where each proxy must be explicitly configured with indications of the pairs to which it belongs and to the identity of the other members of those pairs, the administrative burden on a network administrator might well make some operations infeasible if they require proxy pairs. Even where a proxy is interposed in a network and gets all of the traffic from a client or server, it still must discover the other member for each proxy pair the proxy needs, if the proxy is to perform actions that require proxy pairs.
A technique described in U.S. Pat. No. 9,172,620 (and also U.S. Pat. No. 8,180,902) uses the Transmission Control Protocol (TCP) options portion to perform proxy auto-discovery. Unfortunately, the TCP options portion is limited to 40 bytes, and it may not be feasible to use the TCP options portion to perform proxy auto-discovery in an IPv6 network because each IPv6 address is 16 bytes long.